public with sharing class Lead_FindAccount {
	@future // Make this asynchronous so triggers don't wait for it
	public static void findAccounts(Set<Id> LeadIds){
		// Create the variables
		Map<Id,Id> LeadAccountMatch = new Map<Id,Id>();
		
		// Get the Lead Info
		List<Lead> Leads = [select Company,Account__c, Email, Website from Lead where Id in:LeadIds];
		
		// Create Sets for the Lead search fields
		Set<String> Companies = new Set<String>();
		String punctuation = '\\.|\\,';
	    String prefixes = '^the|^dept of';
	    String suffixes = 'co$|company$|inc$|incorporated$|inc$|ltd$|limited$|llc$|corporation$|corp$|plc$';
		
		for(Lead l : Leads){
			Companies.add('%' + l.Company.toLowerCase().replaceAll(punctuation,'').replaceAll(prefixes,'').replaceAll(suffixes,'').trim() + '%');
		}
		
		// Search for matching accounts (Need extensive bulk handling)
		// PROBLEM: Can't figure out how to include a list of company names in a loop without having to do a query for each Lead
		
		// Find the best match for each lead
		
		// Update the Leads
		
	}
}